package com.cskaoyan.javase.oop3._3inner._2static._0introduction;

/**
 * 静态内部类
 * 成员内部类可以看成一个类的成员，那么静态内部类应该就大致能看成一个类的静态成员了吧？实际上，我更倾向于不这么看待。应该来说，静态内部类，非常特殊，它甚至不像是一个内部类。关于我为什么这么说，我们继续往下学，相信你就明白了。
 *
 * 定义语法：
 * //外围（普通）类
 * [访问权限修饰符] class EnclosedClazz{
 * // 静态内部类访问权限修饰符，有四个，和普通成员一样
 * 	[访问权限修饰符] static class NestedClazz{
 *  }
 * }
 *
 * 依然主要从以下几个角度分析：
 * 1. 访问权限修饰符
 *      和成员内部类一样,有四种
 * 2. 成员特点
 *      静态内部类和外围类是相对独立的两个类
 *      成员特点和普通类一模一样
 *
 *      思考:
 *      静态内部类和它的外围类的类加载是什么关系?会不会互相影响?
 *      不会互相影响,没有任何关系,因为它们是独立的两个类
 *
 * 3. 继承和实现
 *      和成员内部类一样,它也可以继承,也可以实现外部类或接口
 *      但是区别是,如果继承内部类,只能继承静态内部类
 *
 * @since 09:52
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
}

class EnclosedClazz {
    static class A {
    }

    // 静态内部类
    static class NestedClazz extends A {
        int a;
        private int b = 10;
        static int c = 20;
        static final int D = 30;

        {
        }

        static {
        }

        void test() {
        }

        static void testStatic() {
        }

        public NestedClazz() {
        }

        public NestedClazz(int a, int b) {
            this.a = a;
            this.b = b;
        }
    }
}
